Published in:2024-10-24 |

控制流

一、三大控制结构

  • 顺序结构:代码按上下文的顺序执行,逐行执行

  • 选择结构

    • if选择结构 – 条件为真则执行代码块,否则什么也不做
    • if/else – 二选一结构
    • if/elif/elif/else 多选一
  • 循环结构:重复执行某个代码块

    • for循环
    • while循环

二、选择结构

  • 简单的if语言
1
2
3
4
5
6
7
8
9
1. 基本形式
if 条件表达式:
语句/代码块

2. 例子
x = 3
y = 2
if x > y :
print("哟,数学还不错哦!")
  • if/else 二选一结构
1
2
3
4
5
6
a = int(input('请输入:'))
b = int(input('请输入:')) # ctrl + D 复制光标所在的行
if a > b:
print("最大值为:", a)
else:
print("最大值为:", b)
  • if/elif/elif/elif …else
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
msg = "您好,欢迎致电中国联通客户服务热线....."
print(msg)
number = int(input("请选择:"))

# 全部使用if判断 效率低
# if number == 1:
# print("您选择了话费查询")
# if number == 2:
# print("您选择了流量查询")
# if number == 3:
# print("您选择了业务咨询")


if number == 1:
print("您选择了话费查询")
elif number == 2:
print("您选择了流量查询")
elif number == 3:
print("您选择了业务咨询")
else:
print("输入错误")

三、语句和缩进

1、语句

1
2
3
在代码中,能够表达某个意思、操作、逻辑的短代码,称之语句
print("abc") # 一条语句 在python 一条语句结束时不需要加分号
# C语言 printf("abc"); 分号是语句结束的标志
1
2
3
4
a = 3 
b = 5
s = a * b
print(s)
1
2
3
4
5
6
7
a = 3
b = 5
c = 8
# 有折行时 需要加转义字符 \
x = a + \
b + \
c

2、代码块

1
2
3
if 3 > 2:
print("哟,数学不错哦!!!")
print("end!")

在C语言中通过{}来确定代码块:

1
2
3
4
if (3 > 2){
printf("哟,数学不错哦!!!")
printf("end!")
}

3、缩进

建议缩进使用tab键

1
2
3
4
5
if 3 > 2:
print("哟,数学不错哦!!!")
print("end!") # 错误的

# IndentationError: unexpected indent 缩进错误

4、pass语句

pass语句是一个点位语句,if 、while、for、函数中不知道代码怎么实现,或者需要以后再去实现时,可以先加一个pass语句,目的是不让代码报错

1
2
def f():
pass

四、循环结构

循环:满足某个条件时,重复执行某个代码块,被执行的代码块也称为循环体

  • for循环

基本语法:

1
2
for 变量名 in 序列/可迭代对象:
循环体代码(可以有多行)
1
2
3
4
5
for i in 'helloworld':
print(i) # h e l l .....

for i in [2,4,6,8,22]:
print(i)

基本用法二:

1
2
for 变量名  in  range(start,end,[,step])  # step参数可选
语句
1
2
for i in range(0,10):
print(i) # 0 1 2 3 4 5 6 7 8 9
  • Python中range()函数的详细用法:
    • range(0,10) 表示是一个0-9区间范围内的整数 是一个左闭右开的区间
    • range(10) 表示默认从0开始,到10-1 (stop-1)
    • range(0,10,2)第三个参数的默认为1 步长 上楼梯
    • range(10,1,-1) 下楼梯 从10开始,到2
1
2
3
4
5
6
7
8
9
# 0-100以内的所有的偶数
for i in range(0,101,2):
print(i,end=" ")


# 0-100以内的所有的偶数 不使用步长
for i in range(100):
if i%2 == 0:
print(i)
  • Python3中range()返回的是一个可迭代对象 – 可以循环
  • Python2中range()返回的是一个列表 range(1,5)-> [1,2,3,4]

计数器:

1
2
3
4
counter = 1 # 计数器
for i in [2,4,6,8,22]:
print('第'+str(counter)+'个值为'+str(i))
counter += 1

C++语言:

1
2
3
for (int i=0;i<5;i++){
//循环体代码
}
  • while循环

基本形式:

1
2
while 条件表达式(bool):   
代码块
1
2
while 3 > 2:
print("哈哈哈哈")
1
2
3
4
5
6
7
8
# 写一个死循环
while True:
pass

while 1:
pass

# Python3中while 1和 while True是等价

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
# 从键盘输入一个整数,逆序输出每一位数,并计算各位数之和
# 12345 -> 54321 15
number = int(input('请输入一个整数:'))
n = number
sum = 0
while n:
left = n % 10
sum += left
print(left,end='')
n = n // 10

print()
print(str(number)+"的各位数之和为:"+str(sum))

五、break和continue

1、break语句

1
2
3
4
5
6
7
counter = 1
while 1:
if counter <= 100:
print('哈哈')
counter += 1
else:
break # 终止循环-break所在循环

注意:

  • 如果有多层循环,则break只会跳出当前在所在这一层
  • break只能用在循环中,一般是满足某个条件时来使用break
1
2
3
4
5
6
7
8
9
10
11
12
13
# 求n的阶乘

# 从键盘输入一个数,求这个数的阶乘

number = int(input('请输入一个整数:'))
n = number
result = 1
while 1:
result *= n
n -= 1
if n == 1:
break
print(str(number) + '的阶乘为:'+str(result))

2、continue

continue用于循环体内部,作用是结束(跳过)本次循环,继续下一次循环

1
2
3
4
for l in 'Python':
if l == 'y':
continue # 遇到continue 结束本次循环 后面不再执行 继续下一次的循环
print('当前字母为:', l)

六、循环嵌套

内层的循环走的快,内层循环整个走完一次,外层循环加1

1
2
3
4
for i in range(0, 10):
for j in range(0, 10):
print(i, j, end=',')
print()
1
2
3
4
5
# 实现99乘法表
for i in range(1,10):
for j in range(1,i+1):
print(j,"*",i,"=",i*j,end=' ')
print()

七、作用域泄露

1
2
3
4
5
6
7
a = int(input('请输入:'))
b = int(input('请输入:'))
if a > b:
max = a
else:
max = b
print(max)
Prev:
Next: